/*!

Holder - client side image placeholders
Version 2.6.0+51ebp
© 2015 Ivan Malopinsky - http://imsky.co

Site:     http://holderjs.com
Issues:   https://github.com/imsky/holder/issues
License:  http://opensource.org/licenses/MIT

*/
/*!
 * AnchorJS - v1.0.1 - 2015-05-15
 * https://github.com/bryanbraun/anchorjs
 * Copyright (c) 2015 Bryan Braun; Licensed MIT
 */
function AnchorJS(a) {
	"use strict";
	this.options = a || {},
	this._applyRemainingDefaultOptions = function(a) {
		this.options.icon = this.options.hasOwnProperty("icon") ? a.icon: "&#xe9cb",
		this.options.visible = this.options.hasOwnProperty("visible") ? a.visible: "hover",
		this.options.placement = this.options.hasOwnProperty("placement") ? a.placement: "right",
		this.options["class"] = this.options.hasOwnProperty("class") ? a["class"] : ""
	},
	this._applyRemainingDefaultOptions(a),
	this.add = function(a) {
		var b, c, d, e, f, g, h, i, j, k, l, m, n, o;
		if (this._applyRemainingDefaultOptions(this.options), a) {
			if ("string" != typeof a) throw new Error("The selector provided to AnchorJS was invalid.")
		} else a = "h1, h2, h3, h4, h5, h6";
		if (b = document.querySelectorAll(a), 0 === b.length) return ! 1;
		for (this._addBaselineStyles(), c = document.querySelectorAll("[id]"), d = [].map.call(c,
		function(a) {
			return a.id
		}), f = 0; f < b.length; f++) {
			if (b[f].hasAttribute("id")) e = b[f].getAttribute("id");
			else {
				g = b[f].textContent,
				h = g.replace(/[^\w\s-]/gi, "").replace(/\s+/g, "-").replace(/-{2,}/g, "-").substring(0, 32).replace(/^-+|-+$/gm, "").toLowerCase(),
				k = h,
				j = 0;
				do void 0 !== i && (k = h + "-" + j),
				i = d.indexOf(k),
				j += 1;
				while ( - 1 !== i);
				i = void 0,
				d.push(k),
				b[f].setAttribute("id", k),
				e = k
			}
			l = e.replace(/-/g, " "),
			m = '<a class="anchorjs-link ' + this.options["class"] + '" href="#' + e + '" aria-label="Anchor link for: ' + l + '" data-anchorjs-icon="' + this.options.icon + '"></a>',
			n = document.createElement("div"),
			n.innerHTML = m,
			o = n.childNodes,
			"always" === this.options.visible && (o[0].style.opacity = "1"),
			"&#xe9cb" === this.options.icon && (o[0].style.fontFamily = "anchorjs-icons", o[0].style.fontStyle = "normal", o[0].style.fontVariant = "normal", o[0].style.fontWeight = "normal"),
			"left" === this.options.placement ? (o[0].style.position = "absolute", o[0].style.marginLeft = "-1em", o[0].style.paddingRight = "0.5em", b[f].insertBefore(o[0], b[f].firstChild)) : (o[0].style.paddingLeft = "0.375em", b[f].appendChild(o[0]))
		}
		return this
	},
	this.remove = function(a) {
		for (var b, c = document.querySelectorAll(a), d = 0; d < c.length; d++) b = c[d].querySelector(".anchorjs-link"),
		b && c[d].removeChild(b);
		return this
	},
	this._addBaselineStyles = function() {
		if (null === document.head.querySelector("style.anchorjs")) {
			var a, b = document.createElement("style"),
			c = " .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",
			d = " *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",
			e = ' @font-face {   font-family: "anchorjs-icons";   font-style: normal;   font-weight: normal;   src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',
			f = " [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }";
			b.className = "anchorjs",
			b.appendChild(document.createTextNode("")),
			a = document.head.querySelector('[rel="stylesheet"], style'),
			void 0 === a ? document.head.appendChild(b) : document.head.insertBefore(b, a),
			b.sheet.insertRule(c, b.sheet.cssRules.length),
			b.sheet.insertRule(d, b.sheet.cssRules.length),
			b.sheet.insertRule(f, b.sheet.cssRules.length),
			b.sheet.insertRule(e, b.sheet.cssRules.length)
		}
	}
} !
function(a, b) {
	"object" == typeof exports && "object" == typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define(b) : "object" == typeof exports ? exports.Holder = b() : a.Holder = b()
} (this,
function() {
	return function(a) {
		function b(d) {
			if (c[d]) return c[d].exports;
			var e = c[d] = {
				exports: {},
				id: d,
				loaded: !1
			};
			return a[d].call(e.exports, e, e.exports, b),
			e.loaded = !0,
			e.exports
		}
		var c = {};
		return b.m = a,
		b.c = c,
		b.p = "",
		b(0)
	} ([function(a, b, c) { (function(b) {
			function d(a, b, c, d) {
				var g = e(c.substr(c.lastIndexOf(a.domain)), a);
				g && f({
					mode: null,
					el: d,
					flags: g,
					engineSettings: b
				})
			}
			function e(a, b) {
				for (var c = {
					theme: y(K.settings.themes.gray, null),
					stylesheets: b.stylesheets,
					holderURL: []
				},
				d = !1, e = String.fromCharCode(11), f = a.replace(/([^\\])\//g, "$1" + e).split(e), g = /%[0-9a-f]{2}/gi, h = f.length, i = 0; h > i; i++) {
					var j = f[i];
					if (j.match(g)) try {
						j = decodeURIComponent(j)
					} catch(k) {
						j = f[i]
					}
					var l = !1;
					if (K.flags.dimensions.match(j)) d = !0,
					c.dimensions = K.flags.dimensions.output(j),
					l = !0;
					else if (K.flags.fluid.match(j)) d = !0,
					c.dimensions = K.flags.fluid.output(j),
					c.fluid = !0,
					l = !0;
					else if (K.flags.textmode.match(j)) c.textmode = K.flags.textmode.output(j),
					l = !0;
					else if (K.flags.colors.match(j)) {
						var m = K.flags.colors.output(j);
						c.theme = y(c.theme, m),
						l = !0
					} else if (b.themes[j]) b.themes.hasOwnProperty(j) && (c.theme = y(b.themes[j], null)),
					l = !0;
					else if (K.flags.font.match(j)) c.font = K.flags.font.output(j),
					l = !0;
					else if (K.flags.auto.match(j)) c.auto = !0,
					l = !0;
					else if (K.flags.text.match(j)) c.text = K.flags.text.output(j),
					l = !0;
					else if (K.flags.size.match(j)) c.size = K.flags.size.output(j),
					l = !0;
					else if (K.flags.random.match(j)) {
						null == K.vars.cache.themeKeys && (K.vars.cache.themeKeys = Object.keys(b.themes));
						var n = K.vars.cache.themeKeys[0 | Math.random() * K.vars.cache.themeKeys.length];
						c.theme = y(b.themes[n], null),
						l = !0
					}
					l && c.holderURL.push(j)
				}
				return c.holderURL.unshift(b.domain),
				c.holderURL = c.holderURL.join("/"),
				d ? c: !1
			}
			function f(a) {
				var b = a.mode,
				c = a.el,
				d = a.flags,
				e = a.engineSettings,
				f = d.dimensions,
				h = d.theme,
				i = f.width + "x" + f.height;
				if (b = null == b ? d.fluid ? "fluid": "image": b, null != d.text && (h.text = d.text, "object" === c.nodeName.toLowerCase())) {
					for (var l = h.text.split("\\n"), m = 0; m < l.length; m++) l[m] = A(l[m]);
					h.text = l.join("\\n")
				}
				var n = d.holderURL,
				o = y(e, null);
				if (d.font && (h.font = d.font, !o.noFontFallback && "img" === c.nodeName.toLowerCase() && K.setup.supportsCanvas && "svg" === o.renderer && (o = y(o, {
					renderer: "canvas"
				}))), d.font && "canvas" == o.renderer && (o.reRender = !0), "background" == b) null == c.getAttribute("data-background-src") && p(c, {
					"data-background-src": n
				});
				else {
					var q = {};
					q[K.vars.dataAttr] = n,
					p(c, q)
				}
				d.theme = h,
				c.holderData = {
					flags: d,
					engineSettings: o
				},
				("image" == b || "fluid" == b) && p(c, {
					alt: h.text ? h.text + " [" + i + "]": i
				});
				var r = {
					mode: b,
					el: c,
					holderSettings: {
						dimensions: f,
						theme: h,
						flags: d
					},
					engineSettings: o
				};
				"image" == b ? ("html" != o.renderer && d.auto || (c.style.width = f.width + "px", c.style.height = f.height + "px"), "html" == o.renderer ? c.style.backgroundColor = h.background: (g(r), "exact" == d.textmode && (c.holderData.resizeUpdate = !0, K.vars.resizableImages.push(c), j(c)))) : "background" == b && "html" != o.renderer ? g(r) : "fluid" == b && (c.holderData.resizeUpdate = !0, "%" == f.height.slice( - 1) ? c.style.height = f.height: null != d.auto && d.auto || (c.style.height = f.height + "px"), "%" == f.width.slice( - 1) ? c.style.width = f.width: null != d.auto && d.auto || (c.style.width = f.width + "px"), ("inline" == c.style.display || "" === c.style.display || "none" == c.style.display) && (c.style.display = "block"), k(c), "html" == o.renderer ? c.style.backgroundColor = h.background: (K.vars.resizableImages.push(c), j(c)))
			}
			function g(a) {
				function c() {
					var b = null;
					switch (i.renderer) {
					case "canvas":
						b = M(k, a);
						break;
					case "svg":
						b = N(k, a);
						break;
					default:
						throw "Holder: invalid renderer: " + i.renderer
					}
					return b
				}
				var d = null,
				e = a.mode,
				f = a.holderSettings,
				g = a.el,
				i = a.engineSettings;
				switch (i.renderer) {
				case "svg":
					if (!K.setup.supportsSVG) return;
					break;
				case "canvas":
					if (!K.setup.supportsCanvas) return;
					break;
				default:
					return
				}
				var j = {
					width: f.dimensions.width,
					height: f.dimensions.height,
					theme: f.theme,
					flags: f.flags
				},
				k = h(j);
				if (d = c(), null == d) throw "Holder: couldn't render placeholder";
				"background" == e ? (g.style.backgroundImage = "url(" + d + ")", g.style.backgroundSize = j.width + "px " + j.height + "px") : ("img" === g.nodeName.toLowerCase() ? p(g, {
					src: d
				}) : "object" === g.nodeName.toLowerCase() && (p(g, {
					data: d
				}), p(g, {
					type: "image/svg+xml"
				})), i.reRender && b.setTimeout(function() {
					var a = c();
					if (null == a) throw "Holder: couldn't render placeholder";
					"img" === g.nodeName.toLowerCase() ? p(g, {
						src: a
					}) : "object" === g.nodeName.toLowerCase() && (p(g, {
						data: a
					}), p(g, {
						type: "image/svg+xml"
					}))
				},
				100)),
				p(g, {
					"data-holder-rendered": !0
				})
			}
			function h(a) {
				function b(a, b, c, d) {
					b.width = c,
					b.height = d,
					a.width = Math.max(a.width, b.width),
					a.height += b.height,
					a.add(b)
				}
				var c = K.defaults.size;
				switch (parseFloat(a.theme.size) ? c = a.theme.size: parseFloat(a.flags.size) && (c = a.flags.size), a.font = {
					family: a.theme.font ? a.theme.font: "Arial, Helvetica, Open Sans, sans-serif",
					size: i(a.width, a.height, c),
					units: a.theme.units ? a.theme.units: K.defaults.units,
					weight: a.theme.fontweight ? a.theme.fontweight: "bold"
				},
				a.text = a.theme.text ? a.theme.text: Math.floor(a.width) + "x" + Math.floor(a.height), a.flags.textmode) {
				case "literal":
					a.text = a.flags.dimensions.width + "x" + a.flags.dimensions.height;
					break;
				case "exact":
					if (!a.flags.exactDimensions) break;
					a.text = Math.floor(a.flags.exactDimensions.width) + "x" + Math.floor(a.flags.exactDimensions.height)
				}
				var d = new w({
					width: a.width,
					height: a.height
				}),
				e = d.Shape,
				f = new e.Rect("holderBg", {
					fill: a.theme.background
				});
				f.resize(a.width, a.height),
				d.root.add(f);
				var g = new e.Group("holderTextGroup", {
					text: a.text,
					align: "center",
					font: a.font,
					fill: a.theme.foreground
				});
				g.moveTo(null, null, 1),
				d.root.add(g);
				var h = g.textPositionData = L(d);
				if (!h) throw "Holder: staging fallback not supported yet.";
				g.properties.leading = h.boundingBox.height;
				var j = null,
				k = null;
				if (h.lineCount > 1) {
					var l = 0,
					m = 0,
					n = a.width * K.setup.lineWrapRatio,
					o = 0;
					k = new e.Group("line" + o);
					for (var p = 0; p < h.words.length; p++) {
						var q = h.words[p];
						j = new e.Text(q.text);
						var r = "\\n" == q.text; (l + q.width >= n || r === !0) && (b(g, k, l, g.properties.leading), l = 0, m += g.properties.leading, o += 1, k = new e.Group("line" + o), k.y = m),
						r !== !0 && (j.moveTo(l, 0), l += h.spaceWidth + q.width, k.add(j))
					}
					b(g, k, l, g.properties.leading);
					for (var s in g.children) k = g.children[s],
					k.moveTo((g.width - k.width) / 2, null, null);
					g.moveTo((a.width - g.width) / 2, (a.height - g.height) / 2, null),
					(a.height - g.height) / 2 < 0 && g.moveTo(null, 0, null)
				} else j = new e.Text(a.text),
				k = new e.Group("line0"),
				k.add(j),
				g.add(k),
				g.moveTo((a.width - h.boundingBox.width) / 2, (a.height - h.boundingBox.height) / 2, null);
				return d
			}
			function i(a, b, c) {
				var d = parseInt(a, 10),
				e = parseInt(b, 10),
				f = Math.max(d, e),
				g = Math.min(d, e),
				h = .8 * Math.min(g, f * K.defaults.scale);
				return Math.round(Math.max(c, h))
			}
			function j(a) {
				var b;
				b = null == a || null == a.nodeType ? K.vars.resizableImages: [a];
				for (var c = 0,
				d = b.length; d > c; c++) {
					var e = b[c];
					if (e.holderData) {
						var f = e.holderData.flags,
						h = E(e);
						if (h) {
							if (!e.holderData.resizeUpdate) continue;
							if (f.fluid && f.auto) {
								var i = e.holderData.fluidConfig;
								switch (i.mode) {
								case "width":
									h.height = h.width / i.ratio;
									break;
								case "height":
									h.width = h.height * i.ratio
								}
							}
							var j = {
								mode: "image",
								holderSettings: {
									dimensions: h,
									theme: f.theme,
									flags: f
								},
								el: e,
								engineSettings: e.holderData.engineSettings
							};
							"exact" == f.textmode && (f.exactDimensions = h, j.holderSettings.dimensions = f.dimensions),
							g(j)
						} else n(e)
					}
				}
			}
			function k(a) {
				if (a.holderData) {
					var b = E(a);
					if (b) {
						var c = a.holderData.flags,
						d = {
							fluidHeight: "%" == c.dimensions.height.slice( - 1),
							fluidWidth: "%" == c.dimensions.width.slice( - 1),
							mode: null,
							initialDimensions: b
						};
						d.fluidWidth && !d.fluidHeight ? (d.mode = "width", d.ratio = d.initialDimensions.width / parseFloat(c.dimensions.height)) : !d.fluidWidth && d.fluidHeight && (d.mode = "height", d.ratio = parseFloat(c.dimensions.width) / d.initialDimensions.height),
						a.holderData.fluidConfig = d
					} else n(a)
				}
			}
			function l() {
				for (var a, c = [], d = Object.keys(K.vars.invisibleImages), e = 0, f = d.length; f > e; e++) a = K.vars.invisibleImages[d[e]],
				E(a) && "img" == a.nodeName.toLowerCase() && (c.push(a), delete K.vars.invisibleImages[d[e]]);
				c.length && J.run({
					images: c
				}),
				b.requestAnimationFrame(l)
			}
			function m() {
				K.vars.visibilityCheckStarted || (b.requestAnimationFrame(l), K.vars.visibilityCheckStarted = !0)
			}
			function n(a) {
				a.holderData.invisibleId || (K.vars.invisibleId += 1, K.vars.invisibleImages["i" + K.vars.invisibleId] = a, a.holderData.invisibleId = K.vars.invisibleId)
			}
			function o(a, b) {
				return null == b ? document.createElement(a) : document.createElementNS(b, a)
			}
			function p(a, b) {
				for (var c in b) a.setAttribute(c, b[c])
			}
			function q(a, b, c) {
				var d, e;
				null == a ? (a = o("svg", F), d = o("defs", F), e = o("style", F), p(e, {
					type: "text/css"
				}), d.appendChild(e), a.appendChild(d)) : e = a.querySelector("style"),
				a.webkitMatchesSelector && a.setAttribute("xmlns", F);
				for (var f = 0; f < a.childNodes.length; f++) a.childNodes[f].nodeType === G && a.removeChild(a.childNodes[f]);
				for (; e.childNodes.length;) e.removeChild(e.childNodes[0]);
				return p(a, {
					width: b,
					height: c,
					viewBox: "0 0 " + b + " " + c,
					preserveAspectRatio: "none"
				}),
				a
			}
			function r(a, c) {
				if (b.XMLSerializer) {
					var d = new XMLSerializer,
					e = "",
					f = c.stylesheets;
					if (c.svgXMLStylesheet) {
						for (var g = s(), h = f.length - 1; h >= 0; h--) {
							var i = g.createProcessingInstruction("xml-stylesheet", 'href="' + f[h] + '" rel="stylesheet"');
							g.insertBefore(i, g.firstChild)
						}
						var j = g.createProcessingInstruction("xml", 'version="1.0" encoding="UTF-8" standalone="yes"');
						g.insertBefore(j, g.firstChild),
						g.removeChild(g.documentElement),
						e = d.serializeToString(g)
					}
					var k = d.serializeToString(a);
					return k = k.replace(/\&amp;(\#[0-9]{2,}\;)/g, "&$1"),
					e + k
				}
			}
			function s() {
				return b.DOMParser ? (new DOMParser).parseFromString("<xml />", "application/xml") : void 0
			}
			function t(a) {
				K.vars.debounceTimer || a.call(this),
				K.vars.debounceTimer && b.clearTimeout(K.vars.debounceTimer),
				K.vars.debounceTimer = b.setTimeout(function() {
					K.vars.debounceTimer = null,
					a.call(this)
				},
				K.setup.debounce)
			}
			function u() {
				t(function() {
					j(null)
				})
			}
			var v = c(1),
			w = c(2),
			x = c(3),
			y = x.extend,
			z = x.cssProps,
			A = x.encodeHtmlEntity,
			B = x.decodeHtmlEntity,
			C = x.imageExists,
			D = x.getNodeArray,
			E = x.dimensionCheck,
			F = "http://www.w3.org/2000/svg",
			G = 8,
			H = "2.6.0",
			I = "\nCreated with Holder.js " + H + ".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n",
			J = {
				version: H,
				addTheme: function(a, b) {
					return null != a && null != b && (K.settings.themes[a] = b),
					delete K.vars.cache.themeKeys,
					this
				},
				addImage: function(a, b) {
					var c = document.querySelectorAll(b);
					if (c.length) for (var d = 0,
					e = c.length; e > d; d++) {
						var f = o("img"),
						g = {};
						g[K.vars.dataAttr] = a,
						p(f, g),
						c[d].appendChild(f)
					}
					return this
				},
				setResizeUpdate: function(a, b) {
					a.holderData && (a.holderData.resizeUpdate = !!b, a.holderData.resizeUpdate && j(a))
				},
				run: function(a) {
					a = a || {};
					var c = {},
					g = y(K.settings, a);
					K.vars.preempted = !0,
					K.vars.dataAttr = g.dataAttr || K.vars.dataAttr,
					c.renderer = g.renderer ? g.renderer: K.setup.renderer,
					-1 === K.setup.renderers.join(",").indexOf(c.renderer) && (c.renderer = K.setup.supportsSVG ? "svg": K.setup.supportsCanvas ? "canvas": "html");
					var h = D(g.images),
					i = D(g.bgnodes),
					j = D(g.stylenodes),
					k = D(g.objects);
					c.stylesheets = [],
					c.svgXMLStylesheet = !0,
					c.noFontFallback = g.noFontFallback ? g.noFontFallback: !1;
					for (var l = 0; l < j.length; l++) {
						var m = j[l];
						if (m.attributes.rel && m.attributes.href && "stylesheet" == m.attributes.rel.value) {
							var n = m.attributes.href.value,
							p = o("a");
							p.href = n;
							var q = p.protocol + "//" + p.host + p.pathname + p.search;
							c.stylesheets.push(q)
						}
					}
					for (l = 0; l < i.length; l++) if (b.getComputedStyle) {
						var r = b.getComputedStyle(i[l], null).getPropertyValue("background-image"),
						s = i[l].getAttribute("data-background-src"),
						t = null;
						t = null == s ? r: s;
						var u = null,
						v = "?" + g.domain + "/";
						if (0 === t.indexOf(v)) u = t.slice(1);
						else if ( - 1 != t.indexOf(v)) {
							var w = t.substr(t.indexOf(v)).slice(1),
							x = w.match(/([^\"]*)"?\)/);
							null != x && (u = x[1])
						}
						if (null != u) {
							var z = e(u, g);
							z && f({
								mode: "background",
								el: i[l],
								flags: z,
								engineSettings: c
							})
						}
					}
					for (l = 0; l < k.length; l++) {
						var A = k[l],
						B = {};
						try {
							B.data = A.getAttribute("data"),
							B.dataSrc = A.getAttribute(K.vars.dataAttr)
						} catch(E) {}
						var F = null != B.data && 0 === B.data.indexOf(g.domain),
						G = null != B.dataSrc && 0 === B.dataSrc.indexOf(g.domain);
						F ? d(g, c, B.data, A) : G && d(g, c, B.dataSrc, A)
					}
					for (l = 0; l < h.length; l++) {
						var H = h[l],
						I = {};
						try {
							I.src = H.getAttribute("src"),
							I.dataSrc = H.getAttribute(K.vars.dataAttr),
							I.rendered = H.getAttribute("data-holder-rendered")
						} catch(E) {}
						var J = null != I.src,
						L = null != I.dataSrc && 0 === I.dataSrc.indexOf(g.domain),
						M = null != I.rendered && "true" == I.rendered;
						J ? 0 === I.src.indexOf(g.domain) ? d(g, c, I.src, H) : L && (M ? d(g, c, I.dataSrc, H) : !
						function(a, b, c, e, f) {
							C(a,
							function(a) {
								a || d(b, c, e, f)
							})
						} (I.src, g, c, I.dataSrc, H)) : L && d(g, c, I.dataSrc, H)
					}
					return this
				}
			},
			K = {
				settings: {
					domain: "holder.js",
					images: "img",
					objects: "object",
					bgnodes: "body .holderjs",
					stylenodes: "head link.holderjs",
					stylesheets: [],
					themes: {
						gray: {
							background: "#EEEEEE",
							foreground: "#AAAAAA"
						},
						social: {
							background: "#3a5a97",
							foreground: "#FFFFFF"
						},
						industrial: {
							background: "#434A52",
							foreground: "#C2F200"
						},
						sky: {
							background: "#0D8FDB",
							foreground: "#FFFFFF"
						},
						vine: {
							background: "#39DBAC",
							foreground: "#1E292C"
						},
						lava: {
							background: "#F8591A",
							foreground: "#1C2846"
						}
					}
				},
				defaults: {
					size: 10,
					units: "pt",
					scale: 1 / 16
				},
				flags: {
					dimensions: {
						regex: /^(\d+)x(\d+)$/,
						output: function(a) {
							var b = this.regex.exec(a);
							return {
								width: +b[1],
								height: +b[2]
							}
						}
					},
					fluid: {
						regex: /^([0-9]+%?)x([0-9]+%?)$/,
						output: function(a) {
							var b = this.regex.exec(a);
							return {
								width: b[1],
								height: b[2]
							}
						}
					},
					colors: {
						regex: /(?:#|\^)([0-9a-f]{3,})\:(?:#|\^)([0-9a-f]{3,})/i,
						output: function(a) {
							var b = this.regex.exec(a);
							return {
								foreground: "#" + b[2],
								background: "#" + b[1]
							}
						}
					},
					text: {
						regex: /text\:(.*)/,
						output: function(a) {
							return this.regex.exec(a)[1].replace("\\/", "/")
						}
					},
					font: {
						regex: /font\:(.*)/,
						output: function(a) {
							return this.regex.exec(a)[1]
						}
					},
					auto: {
						regex: /^auto$/
					},
					textmode: {
						regex: /textmode\:(.*)/,
						output: function(a) {
							return this.regex.exec(a)[1]
						}
					},
					random: {
						regex: /^random$/
					},
					size: {
						regex: /size\:(\d+)/,
						output: function(a) {
							return this.regex.exec(a)[1]
						}
					}
				}
			},
			L = function() {
				var a = null,
				b = null,
				c = null;
				return function(d) {
					var e = d.root;
					if (K.setup.supportsSVG) {
						var f = !1,
						g = function(a) {
							return document.createTextNode(a)
						}; (null == a || a.parentNode !== document.body) && (f = !0),
						a = q(a, e.properties.width, e.properties.height),
						a.style.display = "block",
						f && (b = o("text", F), c = g(null), p(b, {
							x: 0
						}), b.appendChild(c), a.appendChild(b), document.body.appendChild(a), a.style.visibility = "hidden", a.style.position = "absolute", a.style.top = "-100%", a.style.left = "-100%");
						var h = e.children.holderTextGroup,
						i = h.properties;
						p(b, {
							y: i.font.size,
							style: z({
								"font-weight": i.font.weight,
								"font-size": i.font.size + i.font.units,
								"font-family": i.font.family
							})
						}),
						c.nodeValue = i.text;
						var j = b.getBBox(),
						k = Math.ceil(j.width / (e.properties.width * K.setup.lineWrapRatio)),
						l = i.text.split(" "),
						m = i.text.match(/\\n/g);
						k += null == m ? 0 : m.length,
						c.nodeValue = i.text.replace(/[ ]+/g, "");
						var n = b.getComputedTextLength(),
						r = j.width - n,
						s = Math.round(r / Math.max(1, l.length - 1)),
						t = [];
						if (k > 1) {
							c.nodeValue = "";
							for (var u = 0; u < l.length; u++) if (0 !== l[u].length) {
								c.nodeValue = B(l[u]);
								var v = b.getBBox();
								t.push({
									text: l[u],
									width: v.width
								})
							}
						}
						return a.style.display = "none",
						{
							spaceWidth: s,
							lineCount: k,
							boundingBox: j,
							words: t
						}
					}
					return ! 1
				}
			} (),
			M = function() {
				var a = o("canvas"),
				b = null;
				return function(c) {
					null == b && (b = a.getContext("2d"));
					var d = c.root;
					a.width = K.dpr(d.properties.width),
					a.height = K.dpr(d.properties.height),
					b.textBaseline = "middle",
					b.fillStyle = d.children.holderBg.properties.fill,
					b.fillRect(0, 0, K.dpr(d.children.holderBg.width), K.dpr(d.children.holderBg.height));
					var e = d.children.holderTextGroup;
					e.properties,
					b.font = e.properties.font.weight + " " + K.dpr(e.properties.font.size) + e.properties.font.units + " " + e.properties.font.family + ", monospace",
					b.fillStyle = e.properties.fill;
					for (var f in e.children) {
						var g = e.children[f];
						for (var h in g.children) {
							var i = g.children[h],
							j = K.dpr(e.x + g.x + i.x),
							k = K.dpr(e.y + g.y + i.y + e.properties.leading / 2);
							b.fillText(i.properties.text, j, k)
						}
					}
					return a.toDataURL("image/png")
				}
			} (),
			N = function() {
				if (b.XMLSerializer) {
					var a = s(),
					c = q(null, 0, 0),
					d = o("rect", F);
					return c.appendChild(d),
					function(b, e) {
						var f = b.root;
						q(c, f.properties.width, f.properties.height);
						for (var g = c.querySelectorAll("g"), h = 0; h < g.length; h++) g[h].parentNode.removeChild(g[h]);
						var i = e.holderSettings.flags.holderURL,
						j = "holder_" + (Number(new Date) + 32768 + (0 | 32768 * Math.random())).toString(16),
						k = o("g", F),
						l = f.children.holderTextGroup,
						m = l.properties,
						n = o("g", F),
						s = l.textPositionData,
						t = "#" + j + " text { " + z({
							fill: m.fill,
							"font-weight": m.font.weight,
							"font-family": m.font.family + ", monospace",
							"font-size": m.font.size + m.font.units
						}) + " } ",
						u = a.createComment("\nSource URL: " + i + I),
						v = a.createCDATASection(t),
						w = c.querySelector("style");
						p(k, {
							id: j
						}),
						c.insertBefore(u, c.firstChild),
						w.appendChild(v),
						k.appendChild(d),
						k.appendChild(n),
						c.appendChild(k),
						p(d, {
							width: f.children.holderBg.width,
							height: f.children.holderBg.height,
							fill: f.children.holderBg.properties.fill
						}),
						l.y += .8 * s.boundingBox.height;
						for (var x in l.children) {
							var y = l.children[x];
							for (var A in y.children) {
								var B = y.children[A],
								C = l.x + y.x + B.x,
								D = l.y + y.y + B.y,
								E = o("text", F),
								G = document.createTextNode(null);
								p(E, {
									x: C,
									y: D
								}),
								G.nodeValue = B.properties.text,
								E.appendChild(G),
								n.appendChild(E)
							}
						}
						var H = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(r(c, e.engineSettings))));
						return H
					}
				}
			} ();
			for (var O in K.flags) K.flags.hasOwnProperty(O) && (K.flags[O].match = function(a) {
				return a.match(this.regex)
			});
			K.setup = {
				renderer: "html",
				debounce: 100,
				ratio: 1,
				supportsCanvas: !1,
				supportsSVG: !1,
				lineWrapRatio: .9,
				renderers: ["html", "canvas", "svg"]
			},
			K.dpr = function(a) {
				return a * K.setup.ratio
			},
			K.vars = {
				preempted: !1,
				resizableImages: [],
				invisibleImages: {},
				invisibleId: 0,
				visibilityCheckStarted: !1,
				debounceTimer: null,
				cache: {},
				dataAttr: "data-src"
			},
			function() {
				var a = 1,
				c = 1,
				d = o("canvas"),
				e = null;
				d.getContext && -1 != d.toDataURL("image/png").indexOf("data:image/png") && (K.setup.renderer = "canvas", e = d.getContext("2d"), K.setup.supportsCanvas = !0),
				K.setup.supportsCanvas && (a = b.devicePixelRatio || 1, c = e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1),
				K.setup.ratio = a / c,
				document.createElementNS && document.createElementNS(F, "svg").createSVGRect && (K.setup.renderer = "svg", K.setup.supportsSVG = !0)
			} (),
			m(),
			v && v(function() {
				K.vars.preempted || J.run(),
				b.addEventListener ? (b.addEventListener("resize", u, !1), b.addEventListener("orientationchange", u, !1)) : b.attachEvent("onresize", u),
				"object" == typeof b.Turbolinks && b.document.addEventListener("page:change",
				function() {
					J.run()
				})
			}),
			a.exports = J
		}).call(b,
		function() {
			return this
		} ())
	},
	function(a) {
		function b(a) {
			function b(a) {
				if (!v) {
					if (!g.body) return e(b);
					for (v = !0; a = w.shift();) e(a)
				}
			}
			function c(a) { (t || a.type === i || g[m] === l) && (d(), b())
			}
			function d() {
				t ? (g[s](q, c, j), a[s](i, c, j)) : (g[o](r, c), a[o](k, c))
			}
			function e(a, b) {
				setTimeout(a, +b >= 0 ? b: 1)
			}
			function f(a) {
				v ? e(a) : w.push(a)
			}
			null == document.readyState && document.addEventListener && (document.addEventListener("DOMContentLoaded",
			function y() {
				document.removeEventListener("DOMContentLoaded", y, !1),
				document.readyState = "complete"
			},
			!1), document.readyState = "loading");
			var g = a.document,
			h = g.documentElement,
			i = "load",
			j = !1,
			k = "on" + i,
			l = "complete",
			m = "readyState",
			n = "attachEvent",
			o = "detachEvent",
			p = "addEventListener",
			q = "DOMContentLoaded",
			r = "onreadystatechange",
			s = "removeEventListener",
			t = p in g,
			u = j,
			v = j,
			w = [];
			if (g[m] === l) e(b);
			else if (t) g[p](q, c, j),
			a[p](i, c, j);
			else {
				g[n](r, c),
				a[n](k, c);
				try {
					u = null == a.frameElement && h
				} catch(x) {}
				u && u.doScroll && !
				function z() {
					if (!v) {
						try {
							u.doScroll("left")
						} catch(a) {
							return e(z, 50)
						}
						d(),
						b()
					}
				} ()
			}
			return f.version = "1.4.0",
			f.isReady = function() {
				return v
			},
			f
		}
		a.exports = "undefined" != typeof window && b(window)
	},
	function(a, b, c) {
		var d = c(4),
		e = function(a) {
			function b(a, b) {
				for (var c in b) a[c] = b[c];
				return a
			}
			var c = 1,
			e = d.defclass({
				constructor: function(a) {
					c++,
					this.parent = null,
					this.children = {},
					this.id = c,
					this.name = "n" + c,
					null != a && (this.name = a),
					this.x = 0,
					this.y = 0,
					this.z = 0,
					this.width = 0,
					this.height = 0
				},
				resize: function(a, b) {
					null != a && (this.width = a),
					null != b && (this.height = b)
				},
				moveTo: function(a, b, c) {
					this.x = null != a ? a: this.x,
					this.y = null != b ? b: this.y,
					this.z = null != c ? c: this.z
				},
				add: function(a) {
					var b = a.name;
					if (null != this.children[b]) throw "SceneGraph: child with that name already exists: " + b;
					this.children[b] = a,
					a.parent = this
				}
			}),
			f = d(e,
			function(b) {
				this.constructor = function() {
					b.constructor.call(this, "root"),
					this.properties = a
				}
			}),
			g = d(e,
			function(a) {
				function c(c, d) {
					if (a.constructor.call(this, c), this.properties = {
						fill: "#000"
					},
					null != d) b(this.properties, d);
					else if (null != c && "string" != typeof c) throw "SceneGraph: invalid node name"
				}
				this.Group = d.extend(this, {
					constructor: c,
					type: "group"
				}),
				this.Rect = d.extend(this, {
					constructor: c,
					type: "rect"
				}),
				this.Text = d.extend(this, {
					constructor: function(a) {
						c.call(this),
						this.properties.text = a
					},
					type: "text"
				})
			}),
			h = new f;
			return this.Shape = g,
			this.root = h,
			this
		};
		a.exports = e
	},
	function(a, b) { (function(a) {
			b.extend = function(a, b) {
				var c = {};
				for (var d in a) a.hasOwnProperty(d) && (c[d] = a[d]);
				if (null != b) for (var e in b) b.hasOwnProperty(e) && (c[e] = b[e]);
				return c
			},
			b.cssProps = function(a) {
				var b = [];
				for (var c in a) a.hasOwnProperty(c) && b.push(c + ":" + a[c]);
				return b.join(";")
			},
			b.encodeHtmlEntity = function(a) {
				for (var b = [], c = 0, d = a.length - 1; d >= 0; d--) c = a.charCodeAt(d),
				b.unshift(c > 128 ? ["&#", c, ";"].join("") : a[d]);
				return b.join("")
			},
			b.getNodeArray = function(b) {
				var c = null;
				return "string" == typeof b ? c = document.querySelectorAll(b) : a.NodeList && b instanceof a.NodeList ? c = b: a.Node && b instanceof a.Node ? c = [b] : a.HTMLCollection && b instanceof a.HTMLCollection ? c = b: b instanceof Array ? c = b: null === b && (c = []),
				c
			},
			b.imageExists = function(a, b) {
				var c = new Image;
				c.onerror = function() {
					b.call(this, !1)
				},
				c.onload = function() {
					b.call(this, !0)
				},
				c.src = a
			},
			b.decodeHtmlEntity = function(a) {
				return a.replace(/&#(\d+);/g,
				function(a, b) {
					return String.fromCharCode(b)
				})
			},
			b.dimensionCheck = function(a) {
				var b = {
					height: a.clientHeight,
					width: a.clientWidth
				};
				return b.height && b.width ? b: !1
			}
		}).call(b,
		function() {
			return this
		} ())
	},
	function(a) {
		var b = function() {},
		c = Array.prototype.slice,
		d = function(a, d) {
			var e = b.prototype = "function" == typeof a ? a.prototype: a,
			f = new b,
			g = d.apply(f, c.call(arguments, 2).concat(e));
			if ("object" == typeof g) for (var h in g) f[h] = g[h];
			if (!f.hasOwnProperty("constructor")) return f;
			var i = f.constructor;
			return i.prototype = f,
			i
		};
		d.defclass = function(a) {
			var b = a.constructor;
			return b.prototype = a,
			b
		},
		d.extend = function(a, b) {
			return d(a,
			function(a) {
				return this.uber = a,
				b
			})
		},
		a.exports = d
	}])
}),
/*!
* ZeroClipboard
* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
* Copyright (c) 2014 Jon Rohan, James M. Greene
* Licensed MIT
* http://zeroclipboard.org/
* v1.3.5
*/
!
function(a) {
	"use strict";
	function b(a) {
		return a.replace(/,/g, ".").replace(/[^0-9\.]/g, "")
	}
	function c(a) {
		return parseFloat(b(a)) >= 10
	}
	var d, e = {
		bridge: null,
		version: "0.0.0",
		disabled: null,
		outdated: null,
		ready: null
	},
	f = {},
	g = 0,
	h = {},
	i = 0,
	j = {},
	k = null,
	l = null,
	m = function() {
		var a, b, c, d, e = "ZeroClipboard.swf";
		if (document.currentScript && (d = document.currentScript.src));
		else {
			var f = document.getElementsByTagName("script");
			if ("readyState" in f[0]) for (a = f.length; a--&&("interactive" !== f[a].readyState || !(d = f[a].src)););
			else if ("loading" === document.readyState) d = f[f.length - 1].src;
			else {
				for (a = f.length; a--;) {
					if (c = f[a].src, !c) {
						b = null;
						break
					}
					if (c = c.split("#")[0].split("?")[0], c = c.slice(0, c.lastIndexOf("/") + 1), null == b) b = c;
					else if (b !== c) {
						b = null;
						break
					}
				}
				null !== b && (d = b)
			}
		}
		return d && (d = d.split("#")[0].split("?")[0], e = d.slice(0, d.lastIndexOf("/") + 1) + e),
		e
	} (),
	n = function() {
		var a = /\-([a-z])/g,
		b = function(a, b) {
			return b.toUpperCase()
		};
		return function(c) {
			return c.replace(a, b)
		}
	} (),
	o = function(b, c) {
		var d, e, f;
		return a.getComputedStyle ? d = a.getComputedStyle(b, null).getPropertyValue(c) : (e = n(c), d = b.currentStyle ? b.currentStyle[e] : b.style[e]),
		"cursor" !== c || d && "auto" !== d || (f = b.tagName.toLowerCase(), "a" !== f) ? d: "pointer"
	},
	p = function(b) {
		b || (b = a.event);
		var c;
		this !== a ? c = this: b.target ? c = b.target: b.srcElement && (c = b.srcElement),
		K.activate(c)
	},
	q = function(a, b, c) {
		a && 1 === a.nodeType && (a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent && a.attachEvent("on" + b, c))
	},
	r = function(a, b, c) {
		a && 1 === a.nodeType && (a.removeEventListener ? a.removeEventListener(b, c, !1) : a.detachEvent && a.detachEvent("on" + b, c))
	},
	s = function(a, b) {
		if (!a || 1 !== a.nodeType) return a;
		if (a.classList) return a.classList.contains(b) || a.classList.add(b),
		a;
		if (b && "string" == typeof b) {
			var c = (b || "").split(/\s+/);
			if (1 === a.nodeType) if (a.className) {
				for (var d = " " + a.className + " ",
				e = a.className,
				f = 0,
				g = c.length; g > f; f++) d.indexOf(" " + c[f] + " ") < 0 && (e += " " + c[f]);
				a.className = e.replace(/^\s+|\s+$/g, "")
			} else a.className = b
		}
		return a
	},
	t = function(a, b) {
		if (!a || 1 !== a.nodeType) return a;
		if (a.classList) return a.classList.contains(b) && a.classList.remove(b),
		a;
		if (b && "string" == typeof b || void 0 === b) {
			var c = (b || "").split(/\s+/);
			if (1 === a.nodeType && a.className) if (b) {
				for (var d = (" " + a.className + " ").replace(/[\n\t]/g, " "), e = 0, f = c.length; f > e; e++) d = d.replace(" " + c[e] + " ", " ");
				a.className = d.replace(/^\s+|\s+$/g, "")
			} else a.className = ""
		}
		return a
	},
	u = function() {
		var a, b, c, d = 1;
		return "function" == typeof document.body.getBoundingClientRect && (a = document.body.getBoundingClientRect(), b = a.right - a.left, c = document.body.offsetWidth, d = Math.round(b / c * 100) / 100),
		d
	},
	v = function(b, c) {
		var d = {
			left: 0,
			top: 0,
			width: 0,
			height: 0,
			zIndex: B(c) - 1
		};
		if (b.getBoundingClientRect) {
			var e, f, g, h = b.getBoundingClientRect();
			"pageXOffset" in a && "pageYOffset" in a ? (e = a.pageXOffset, f = a.pageYOffset) : (g = u(), e = Math.round(document.documentElement.scrollLeft / g), f = Math.round(document.documentElement.scrollTop / g));
			var i = document.documentElement.clientLeft || 0,
			j = document.documentElement.clientTop || 0;
			d.left = h.left + e - i,
			d.top = h.top + f - j,
			d.width = "width" in h ? h.width: h.right - h.left,
			d.height = "height" in h ? h.height: h.bottom - h.top
		}
		return d
	},
	w = function(a, b) {
		var c = null == b || b && b.cacheBust === !0 && b.useNoCache === !0;
		return c ? ( - 1 === a.indexOf("?") ? "?": "&") + "noCache=" + (new Date).getTime() : ""
	},
	x = function(b) {
		var c, d, e, f = [],
		g = [],
		h = [];
		if (b.trustedOrigins && ("string" == typeof b.trustedOrigins ? g.push(b.trustedOrigins) : "object" == typeof b.trustedOrigins && "length" in b.trustedOrigins && (g = g.concat(b.trustedOrigins))), b.trustedDomains && ("string" == typeof b.trustedDomains ? g.push(b.trustedDomains) : "object" == typeof b.trustedDomains && "length" in b.trustedDomains && (g = g.concat(b.trustedDomains))), g.length) for (c = 0, d = g.length; d > c; c++) if (g.hasOwnProperty(c) && g[c] && "string" == typeof g[c]) {
			if (e = E(g[c]), !e) continue;
			if ("*" === e) {
				h = [e];
				break
			}
			h.push.apply(h, [e, "//" + e, a.location.protocol + "//" + e])
		}
		return h.length && f.push("trustedOrigins=" + encodeURIComponent(h.join(","))),
		"string" == typeof b.jsModuleId && b.jsModuleId && f.push("jsModuleId=" + encodeURIComponent(b.jsModuleId)),
		f.join("&")
	},
	y = function(a, b, c) {
		if ("function" == typeof b.indexOf) return b.indexOf(a, c);
		var d, e = b.length;
		for ("undefined" == typeof c ? c = 0 : 0 > c && (c = e + c), d = c; e > d; d++) if (b.hasOwnProperty(d) && b[d] === a) return d;
		return - 1
	},
	z = function(a) {
		if ("string" == typeof a) throw new TypeError("ZeroClipboard doesn't accept query strings.");
		return a.length ? a: [a]
	},
	A = function(b, c, d, e) {
		e ? a.setTimeout(function() {
			b.apply(c, d)
		},
		0) : b.apply(c, d)
	},
	B = function(a) {
		var b, c;
		return a && ("number" == typeof a && a > 0 ? b = a: "string" == typeof a && (c = parseInt(a, 10)) && !isNaN(c) && c > 0 && (b = c)),
		b || ("number" == typeof N.zIndex && N.zIndex > 0 ? b = N.zIndex: "string" == typeof N.zIndex && (c = parseInt(N.zIndex, 10)) && !isNaN(c) && c > 0 && (b = c)),
		b || 0
	},
	C = function(a, b) {
		if (a && b !== !1 && "undefined" != typeof console && console && (console.warn || console.log)) {
			var c = "`" + a + "` is deprecated. See docs for more info:\n    https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations";
			console.warn ? console.warn(c) : console.log(c)
		}
	},
	D = function() {
		var a, b, c, d, e, f, g = arguments[0] || {};
		for (a = 1, b = arguments.length; b > a; a++) if (null != (c = arguments[a])) for (d in c) if (c.hasOwnProperty(d)) {
			if (e = g[d], f = c[d], g === f) continue;
			void 0 !== f && (g[d] = f)
		}
		return g
	},
	E = function(a) {
		if (null == a || "" === a) return null;
		if (a = a.replace(/^\s+|\s+$/g, ""), "" === a) return null;
		var b = a.indexOf("//");
		a = -1 === b ? a: a.slice(b + 2);
		var c = a.indexOf("/");
		return a = -1 === c ? a: -1 === b || 0 === c ? null: a.slice(0, c),
		a && ".swf" === a.slice( - 4).toLowerCase() ? null: a || null
	},
	F = function() {
		var a = function(a, b) {
			var c, d, e;
			if (null != a && "*" !== b[0] && ("string" == typeof a && (a = [a]), "object" == typeof a && "length" in a)) for (c = 0, d = a.length; d > c; c++) if (a.hasOwnProperty(c) && (e = E(a[c]))) {
				if ("*" === e) {
					b.length = 0,
					b.push("*");
					break
				} - 1 === y(e, b) && b.push(e)
			}
		},
		b = {
			always: "always",
			samedomain: "sameDomain",
			never: "never"
		};
		return function(c, d) {
			var e, f = d.allowScriptAccess;
			if ("string" == typeof f && (e = f.toLowerCase()) && /^always|samedomain|never$/.test(e)) return b[e];
			var g = E(d.moviePath);
			null === g && (g = c);
			var h = [];
			a(d.trustedOrigins, h),
			a(d.trustedDomains, h);
			var i = h.length;
			if (i > 0) {
				if (1 === i && "*" === h[0]) return "always";
				if ( - 1 !== y(c, h)) return 1 === i && c === g ? "sameDomain": "always"
			}
			return "never"
		}
	} (),
	G = function(a) {
		if (null == a) return [];
		if (Object.keys) return Object.keys(a);
		var b = [];
		for (var c in a) a.hasOwnProperty(c) && b.push(c);
		return b
	},
	H = function(a) {
		if (a) for (var b in a) a.hasOwnProperty(b) && delete a[b];
		return a
	},
	I = function() {
		try {
			return document.activeElement
		} catch(a) {}
		return null
	},
	J = function() {
		var a = !1;
		if ("boolean" == typeof e.disabled) a = e.disabled === !1;
		else {
			if ("function" == typeof ActiveXObject) try {
				new ActiveXObject("ShockwaveFlash.ShockwaveFlash") && (a = !0)
			} catch(b) {} ! a && navigator.mimeTypes["application/x-shockwave-flash"] && (a = !0)
		}
		return a
	},
	K = function(a, b) {
		return this instanceof K ? (this.id = "" + g++, h[this.id] = {
			instance: this,
			elements: [],
			handlers: {}
		},
		a && this.clip(a), "undefined" != typeof b && (C("new ZeroClipboard(elements, options)", N.debug), K.config(b)), this.options = K.config(), "boolean" != typeof e.disabled && (e.disabled = !J()), void(e.disabled === !1 && e.outdated !== !0 && null === e.bridge && (e.outdated = !1, e.ready = !1, O()))) : new K(a, b)
	};
	K.prototype.setText = function(a) {
		return a && "" !== a && (f["text/plain"] = a, e.ready === !0 && e.bridge && "function" == typeof e.bridge.setText ? e.bridge.setText(a) : e.ready = !1),
		this
	},
	K.prototype.setSize = function(a, b) {
		return e.ready === !0 && e.bridge && "function" == typeof e.bridge.setSize ? e.bridge.setSize(a, b) : e.ready = !1,
		this
	};
	var L = function(a) {
		e.ready === !0 && e.bridge && "function" == typeof e.bridge.setHandCursor ? e.bridge.setHandCursor(a) : e.ready = !1
	};
	K.prototype.destroy = function() {
		this.unclip(),
		this.off(),
		delete h[this.id]
	};
	var M = function() {
		var a, b, c, d = [],
		e = G(h);
		for (a = 0, b = e.length; b > a; a++) c = h[e[a]].instance,
		c && c instanceof K && d.push(c);
		return d
	};
	K.version = "1.3.5";
	var N = {
		swfPath: m,
		trustedDomains: a.location.host ? [a.location.host] : [],
		cacheBust: !0,
		forceHandCursor: !1,
		zIndex: 999999999,
		debug: !0,
		title: null,
		autoActivate: !0
	};
	K.config = function(a) {
		if ("object" == typeof a && null !== a && D(N, a), "string" != typeof a || !a) {
			var b = {};
			for (var c in N) N.hasOwnProperty(c) && (b[c] = "object" == typeof N[c] && null !== N[c] ? "length" in N[c] ? N[c].slice(0) : D({},
			N[c]) : N[c]);
			return b
		}
		return N.hasOwnProperty(a) ? N[a] : void 0
	},
	K.destroy = function() {
		K.deactivate();
		for (var a in h) if (h.hasOwnProperty(a) && h[a]) {
			var b = h[a].instance;
			b && "function" == typeof b.destroy && b.destroy()
		}
		var c = P(e.bridge);
		c && c.parentNode && (c.parentNode.removeChild(c), e.ready = null, e.bridge = null)
	},
	K.activate = function(a) {
		d && (t(d, N.hoverClass), t(d, N.activeClass)),
		d = a,
		s(a, N.hoverClass),
		Q();
		var b = N.title || a.getAttribute("title");
		if (b) {
			var c = P(e.bridge);
			c && c.setAttribute("title", b)
		}
		var f = N.forceHandCursor === !0 || "pointer" === o(a, "cursor");
		L(f)
	},
	K.deactivate = function() {
		var a = P(e.bridge);
		a && (a.style.left = "0px", a.style.top = "-9999px", a.removeAttribute("title")),
		d && (t(d, N.hoverClass), t(d, N.activeClass), d = null)
	};
	var O = function() {
		var b, c, d = document.getElementById("global-zeroclipboard-html-bridge");
		if (!d) {
			var f = K.config();
			f.jsModuleId = "string" == typeof k && k || "string" == typeof l && l || null;
			var g = F(a.location.host, N),
			h = x(f),
			i = N.moviePath + w(N.moviePath, N),
			j = '      <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%">         <param name="movie" value="' + i + '"/>         <param name="allowScriptAccess" value="' + g + '"/>         <param name="scale" value="exactfit"/>         <param name="loop" value="false"/>         <param name="menu" value="false"/>         <param name="quality" value="best" />         <param name="bgcolor" value="#ffffff"/>         <param name="wmode" value="transparent"/>         <param name="flashvars" value="' + h + '"/>         <embed src="' + i + '"           loop="false" menu="false"           quality="best" bgcolor="#ffffff"           width="100%" height="100%"           name="global-zeroclipboard-flash-bridge"           allowScriptAccess="' + g + '"           allowFullScreen="false"           type="application/x-shockwave-flash"           wmode="transparent"           pluginspage="http://www.macromedia.com/go/getflashplayer"           flashvars="' + h + '"           scale="exactfit">         </embed>       </object>';
			d = document.createElement("div"),
			d.id = "global-zeroclipboard-html-bridge",
			d.setAttribute("class", "global-zeroclipboard-container"),
			d.style.position = "absolute",
			d.style.left = "0px",
			d.style.top = "-9999px",
			d.style.width = "15px",
			d.style.height = "15px",
			d.style.zIndex = "" + B(N.zIndex),
			document.body.appendChild(d),
			d.innerHTML = j
		}
		b = document["global-zeroclipboard-flash-bridge"],
		b && (c = b.length) && (b = b[c - 1]),
		e.bridge = b || d.children[0].lastElementChild
	},
	P = function(a) {
		for (var b = /^OBJECT|EMBED$/,
		c = a && a.parentNode; c && b.test(c.nodeName) && c.parentNode;) c = c.parentNode;
		return c || null
	},
	Q = function() {
		if (d) {
			var a = v(d, N.zIndex),
			b = P(e.bridge);
			b && (b.style.top = a.top + "px", b.style.left = a.left + "px", b.style.width = a.width + "px", b.style.height = a.height + "px", b.style.zIndex = a.zIndex + 1),
			e.ready === !0 && e.bridge && "function" == typeof e.bridge.setSize ? e.bridge.setSize(a.width, a.height) : e.ready = !1
		}
		return this
	};
	K.prototype.on = function(a, b) {
		var c, d, f, g = {},
		i = h[this.id] && h[this.id].handlers;
		if ("string" == typeof a && a) f = a.toLowerCase().split(/\s+/);
		else if ("object" == typeof a && a && "undefined" == typeof b) for (c in a) a.hasOwnProperty(c) && "string" == typeof c && c && "function" == typeof a[c] && this.on(c, a[c]);
		if (f && f.length) {
			for (c = 0, d = f.length; d > c; c++) a = f[c].replace(/^on/, ""),
			g[a] = !0,
			i[a] || (i[a] = []),
			i[a].push(b);
			g.noflash && e.disabled && T.call(this, "noflash", {}),
			g.wrongflash && e.outdated && T.call(this, "wrongflash", {
				flashVersion: e.version
			}),
			g.load && e.ready && T.call(this, "load", {
				flashVersion: e.version
			})
		}
		return this
	},
	K.prototype.off = function(a, b) {
		var c, d, e, f, g, i = h[this.id] && h[this.id].handlers;
		if (0 === arguments.length) f = G(i);
		else if ("string" == typeof a && a) f = a.split(/\s+/);
		else if ("object" == typeof a && a && "undefined" == typeof b) for (c in a) a.hasOwnProperty(c) && "string" == typeof c && c && "function" == typeof a[c] && this.off(c, a[c]);
		if (f && f.length) for (c = 0, d = f.length; d > c; c++) if (a = f[c].toLowerCase().replace(/^on/, ""), g = i[a], g && g.length) if (b) for (e = y(b, g); - 1 !== e;) g.splice(e, 1),
		e = y(b, g, e);
		else i[a].length = 0;
		return this
	},
	K.prototype.handlers = function(a) {
		var b, c = null,
		d = h[this.id] && h[this.id].handlers;
		if (d) {
			if ("string" == typeof a && a) return d[a] ? d[a].slice(0) : null;
			c = {};
			for (b in d) d.hasOwnProperty(b) && d[b] && (c[b] = d[b].slice(0))
		}
		return c
	};
	var R = function(b, c, d, e) {
		var f = h[this.id] && h[this.id].handlers[b];
		if (f && f.length) {
			var g, i, j, k = c || this;
			for (g = 0, i = f.length; i > g; g++) j = f[g],
			c = k,
			"string" == typeof j && "function" == typeof a[j] && (j = a[j]),
			"object" == typeof j && j && "function" == typeof j.handleEvent && (c = j, j = j.handleEvent),
			"function" == typeof j && A(j, c, d, e)
		}
		return this
	};
	K.prototype.clip = function(a) {
		a = z(a);
		for (var b = 0; b < a.length; b++) if (a.hasOwnProperty(b) && a[b] && 1 === a[b].nodeType) {
			a[b].zcClippingId ? -1 === y(this.id, j[a[b].zcClippingId]) && j[a[b].zcClippingId].push(this.id) : (a[b].zcClippingId = "zcClippingId_" + i++, j[a[b].zcClippingId] = [this.id], N.autoActivate === !0 && q(a[b], "mouseover", p));
			var c = h[this.id].elements; - 1 === y(a[b], c) && c.push(a[b])
		}
		return this
	},
	K.prototype.unclip = function(a) {
		var b = h[this.id];
		if (b) {
			var c, d = b.elements;
			a = "undefined" == typeof a ? d.slice(0) : z(a);
			for (var e = a.length; e--;) if (a.hasOwnProperty(e) && a[e] && 1 === a[e].nodeType) {
				for (c = 0; - 1 !== (c = y(a[e], d, c));) d.splice(c, 1);
				var f = j[a[e].zcClippingId];
				if (f) {
					for (c = 0; - 1 !== (c = y(this.id, f, c));) f.splice(c, 1);
					0 === f.length && (N.autoActivate === !0 && r(a[e], "mouseover", p), delete a[e].zcClippingId)
				}
			}
		}
		return this
	},
	K.prototype.elements = function() {
		var a = h[this.id];
		return a && a.elements ? a.elements.slice(0) : []
	};
	var S = function(a) {
		var b, c, d, e, f, g = [];
		if (a && 1 === a.nodeType && (b = a.zcClippingId) && j.hasOwnProperty(b) && (c = j[b], c && c.length)) for (d = 0, e = c.length; e > d; d++) f = h[c[d]].instance,
		f && f instanceof K && g.push(f);
		return g
	};
	N.hoverClass = "zeroclipboard-is-hover",
	N.activeClass = "zeroclipboard-is-active",
	N.trustedOrigins = null,
	N.allowScriptAccess = null,
	N.useNoCache = !0,
	N.moviePath = "ZeroClipboard.swf",
	K.detectFlashSupport = function() {
		return C("ZeroClipboard.detectFlashSupport", N.debug),
		J()
	},
	K.dispatch = function(a, b) {
		if ("string" == typeof a && a) {
			var c = a.toLowerCase().replace(/^on/, "");
			if (c) for (var e = d && N.autoActivate === !0 ? S(d) : M(), f = 0, g = e.length; g > f; f++) T.call(e[f], c, b)
		}
	},
	K.prototype.setHandCursor = function(a) {
		return C("ZeroClipboard.prototype.setHandCursor", N.debug),
		a = "boolean" == typeof a ? a: !!a,
		L(a),
		N.forceHandCursor = a,
		this
	},
	K.prototype.reposition = function() {
		return C("ZeroClipboard.prototype.reposition", N.debug),
		Q()
	},
	K.prototype.receiveEvent = function(a, b) {
		if (C("ZeroClipboard.prototype.receiveEvent", N.debug), "string" == typeof a && a) {
			var c = a.toLowerCase().replace(/^on/, "");
			c && T.call(this, c, b)
		}
	},
	K.prototype.setCurrent = function(a) {
		return C("ZeroClipboard.prototype.setCurrent", N.debug),
		K.activate(a),
		this
	},
	K.prototype.resetBridge = function() {
		return C("ZeroClipboard.prototype.resetBridge", N.debug),
		K.deactivate(),
		this
	},
	K.prototype.setTitle = function(a) {
		if (C("ZeroClipboard.prototype.setTitle", N.debug), a = a || N.title || d && d.getAttribute("title")) {
			var b = P(e.bridge);
			b && b.setAttribute("title", a)
		}
		return this
	},
	K.setDefaults = function(a) {
		C("ZeroClipboard.setDefaults", N.debug),
		K.config(a)
	},
	K.prototype.addEventListener = function(a, b) {
		return C("ZeroClipboard.prototype.addEventListener", N.debug),
		this.on(a, b)
	},
	K.prototype.removeEventListener = function(a, b) {
		return C("ZeroClipboard.prototype.removeEventListener", N.debug),
		this.off(a, b)
	},
	K.prototype.ready = function() {
		return C("ZeroClipboard.prototype.ready", N.debug),
		e.ready === !0
	};
	var T = function(a, g) {
		a = a.toLowerCase().replace(/^on/, "");
		var h = g && g.flashVersion && b(g.flashVersion) || null,
		i = d,
		j = !0;
		switch (a) {
		case "load":
			if (h) {
				if (!c(h)) return void T.call(this, "onWrongFlash", {
					flashVersion: h
				});
				e.outdated = !1,
				e.ready = !0,
				e.version = h
			}
			break;
		case "wrongflash":
			h && !c(h) && (e.outdated = !0, e.ready = !1, e.version = h);
			break;
		case "mouseover":
			s(i, N.hoverClass);
			break;
		case "mouseout":
			N.autoActivate === !0 && K.deactivate();
			break;
		case "mousedown":
			s(i, N.activeClass);
			break;
		case "mouseup":
			t(i, N.activeClass);
			break;
		case "datarequested":
			if (i) {
				var k = i.getAttribute("data-clipboard-target"),
				l = k ? document.getElementById(k) : null;
				if (l) {
					var m = l.value || l.textContent || l.innerText;
					m && this.setText(m)
				} else {
					var n = i.getAttribute("data-clipboard-text");
					n && this.setText(n)
				}
			}
			j = !1;
			break;
		case "complete":
			H(f),
			i && i !== I() && i.focus && i.focus()
		}
		var o = i,
		p = [this, g];
		return R.call(this, a, o, p, j)
	};
	"function" == typeof define && define.amd ? define(["require", "exports", "module"],
	function(a, b, c) {
		return k = c && c.id || null,
		K
	}) : "object" == typeof module && module && "object" == typeof module.exports && module.exports && "function" == typeof a.require ? (l = module.id || null, module.exports = K) : a.ZeroClipboard = K
} (function() {
	return this
} ());
var anchors = new AnchorJS;
/*!
 * JavaScript for Bootstrap's docs (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under the Creative Commons Attribution 3.0 Unported License. For
 * details, see https://creativecommons.org/licenses/by/3.0/.
 */
!
function(a) {
	"use strict";
	a(function() {
		var b = a(window),
		c = a(document.body);
		c.scrollspy({
			target: ".bs-docs-sidebar"
		}),
		b.on("load",
		function() {
			c.scrollspy("refresh")
		}),
		a(".bs-docs-container [href=#]").click(function(a) {
			a.preventDefault()
		}),
		setTimeout(function() {
			var b = a(".bs-docs-sidebar");
			b.affix({
				offset: {
					top: function() {
						var c = b.offset().top,
						d = parseInt(b.children(0).css("margin-top"), 10),
						e = a(".bs-docs-nav").height();
						return this.top = c - e - d
					},
					bottom: function() {
						return this.bottom = a(".bs-docs-footer").outerHeight(!0)
					}
				}
			})
		},
		100),
		setTimeout(function() {
			a(".bs-top").affix()
		},
		100),
		function() {
			var b = a("#bs-theme-stylesheet"),
			c = a(".bs-docs-theme-toggle"),
			d = function() {
				b.attr("href", b.attr("data-href")),
				c.text("禁用主题预览"),
				localStorage.setItem("previewTheme", !0)
			};
			localStorage.getItem("previewTheme") && d(),
			c.click(function() {
				var a = b.attr("href");
				a && 0 !== a.indexOf("data") ? (b.attr("href", ""), c.text("主题预览"), localStorage.removeItem("previewTheme")) : d()
			})
		} (),
		a(".tooltip-demo").tooltip({
			selector: '[data-toggle="tooltip"]',
			container: "body"
		}),
		a(".popover-demo").popover({
			selector: '[data-toggle="popover"]',
			container: "body"
		}),
		a(".tooltip-test").tooltip(),
		a(".popover-test").popover(),
		a(".bs-docs-popover").popover(),
		a("#loading-example-btn").on("click",
		function() {
			var b = a(this);
			b.button("loading"),
			setTimeout(function() {
				b.button("reset")
			},
			3e3)
		}),
		a("#exampleModal").on("show.bs.modal",
		function(b) {
			var c = a(b.relatedTarget),
			d = c.data("whatever"),
			e = a(this);
			e.find(".modal-title").text("New message to " + d),
			e.find(".modal-body input").val(d)
		}),
		a(".bs-docs-activate-animated-progressbar").on("click",
		function() {
			a(this).siblings(".progress").find(".progress-bar-striped").toggleClass("active")
		}),
		ZeroClipboard.config({
			moviePath: "/assets/flash/ZeroClipboard.swf",
			hoverClass: "btn-clipboard-hover"
		}),
		a(".highlight").each(function() {
			var b = '<div class="zero-clipboard"><span class="btn-clipboard">复制</span></div>';
			a(this).before(b)
		});
		var d = new ZeroClipboard(a(".btn-clipboard")),
		e = a("#global-zeroclipboard-html-bridge");
		d.on("load",
		function() {
			e.data("placement", "top").attr("title", "复制到剪贴板").tooltip(),
			d.on("dataRequested",
			function(b) {
				var c = a(this).parent().nextAll(".highlight").first();
				b.setText(c.text())
			}),
			d.on("complete",
			function() {
				e.attr("title", "复制成功！").tooltip("fixTitle").tooltip("show").attr("title", "复制到剪贴板").tooltip("fixTitle")
			})
		}),
		d.on("noflash wrongflash",
		function() {
			a(".zero-clipboard").remove(),
			ZeroClipboard.destroy()
		})
	})
} (jQuery),
function() {
	"use strict";
	anchors.options.placement = "left",
	anchors.add(".bs-docs-section > h1, .bs-docs-section > h2, .bs-docs-section > h3, .bs-docs-section > h4, .bs-docs-section > h5")
} ();